#include "Triplet.hpp"

Triplet::Triplet()
{

}

Triplet::Triplet(string str1, string str2, string str3)
{
    stringCopy(m_triplet[0],str1);
    stringCopy(m_triplet[1],str2);
    stringCopy(m_triplet[2],str3);
}

Triplet::~Triplet()
{

}

bool Triplet::getTriplet(string triplet[3])
{
	for(int i=0; i<3; i++)
	{
		if(!stringCopy(triplet[i], m_triplet[i]))
			return false;
	}
	return true;
}

bool Triplet::getstringAtIndex(string &str, int i)
{
	if(i<0 || i>2)
		return false;
	if(!stringCopy(str, m_triplet[i]))
		return false;
	return true;
}

bool Triplet::setstringAtIndex(string &str, int i)
{
    if(i<0 || i>2)
        return false;
    if(!stringCopy(str, m_triplet[i]))
        return false;
    return true;
}

void Triplet::printTriplet()
{
    std::cout<<m_triplet[0]<<" "<<m_triplet[1]<<" "<<m_triplet[2]<<endl;
}
bool stringCopy(string &dst, string &src)
{
    unsigned int size = src.size();
    dst.resize(size);
    for(unsigned int i=0; i<size; i++)
    {
       dst[i]=src[i];
    }
    if(!(dst==src))         //copy check - may be redundant
        return false;
    return true;
}

bool operator== (string str1, string str2)
{
    unsigned int size = str1.size();
    if(size!=str2.size())       //size must match
        return false;
    for(unsigned int i=0; i<size; i++)
    {
        if(str1[i]!=str2[i])    //check each char
            return false;
    }
    return true;
}

bool operator!= (string str1, string str2)
{
    return !(str1==str2);
}
